package com.yanggu.scala.chapater05

object FunDemo01 {

  def main(args: Array[String]): Unit = {
    val n1 = 10
    val n2 = 20
    val result = getResult(n1, n2, oprea = '-')
    //函数的定义
    // def 函数名([参数1:数据类型, 参数2:数据类型], ...) [[: 返回值数据类型]  = ] {
    //    代码
    //    ...
    //    return 结果
    // }
    //1. 返回值形式1： ： 返回值类型 =
    //2. 返回值形式2：  = 表示返回值类型不确定，使用类型推导完成
    //3. 返回值形式3：  表示没有返回值，return语句不生效
    //4. 如果没有return语句。默认将执行到最后一行的结果作为返回值
    println(result)
    f1()
    val result1 = f2()
    println(result1)
    val str = f3()
    println(str)
  }

  /**
   * 有参数和有返回值
   *
   * @param n1
   * @param n2
   * @param oprea
   * @return
   */
  def getResult(n1: Int, n2: Int, oprea: Char): Int = {
    if (oprea.equals('=')) {
      n1 + n2
    } else if (oprea.equals('-')) {
      n1 - n2
    } else {
      n1 * n2
    }
  }

  /**
   * 无参无返回值
   */
  def f1() {
    println("无参，无返回值的函数")
  }

  /**
   * 无参, 显示定义返回值
   *
   * @return
   */
  def f2(): Int = {
    println("无参有返回值的函数")
    1
  }

  /**
   * 无参, 没有定义返回值。编译器手动推断返回值类型
   *
   * @return
   */
  def f3() = {
    println("返回值不确定的函数")
    "hello"
  }

}
